Critical systems, such as those onboard an aircraft, often include multiple processors, which may be used for redundancy. Each processor may execute the same instructions, and monitor the same data. These systems often run in frames, looping over a given time period. For example, multiple processors may be set up in parallel to continuously monitor and analyze flight critical sensor data. Each processor individually monitors and analyzes the same data and compares its results with the other processors. This way, if a fault occurs with one of the processors, it can be detected and is not detrimental to the system.
When operating in a multi-processor environment, variation in each processor's execution may create a time skew between the processors. When the processors are executing the same code, one processor may lag behind the others due to, for example, taking a different path through the code, delays due to data fetches, or any other reason a processor may be executing instructions at a slower rate. Skews are undesirable in that they may lead to each processor measuring and analyzing different data, creating inconsistencies between the processors. It is desirable to occasionally synchronize the processors to ensure that, over time, the processors are executing instructions and monitoring data at the same rate.